home *** CD-ROM | disk | FTP | other *** search
/ Robotics & Artificial Int…3 (Professional Edition) / Robotics & Artificial Intelligence Tools 2003 (Professional Edition).iso / neural network tool and application / nsinstall.exe / data1.cab / DLLCust_Files / INPUT / LOGISTIC.C next >
Encoding:
C/C++ Source or Header  |  2002-03-08  |  2.1 KB  |  69 lines

  1. // Dynamic link library implementation of a logistic function input source
  2.  
  3. #include "NSDLL.h" 
  4.  
  5. typedef struct {
  6.     NSFloat *data;
  7.     int length;
  8. } ResultData;
  9.  
  10. /***************************/
  11. /* Activation of component */
  12. __declspec(dllexport) void performInput(
  13.     DLLData    *instance,    // Pointer to instance data (may be NULL)
  14.     NSFloat    *data,         // Pointer to the data
  15.     int rows,         // Number of rows of data
  16.     int cols         // Number of cols of data
  17.     )
  18. {
  19.     int i;
  20.     NSFloat constant = getFloatParameter(instance, 2, 1);
  21.     ResultData *results = (ResultData*)getUserData(instance);
  22.     for (i=0; i<results->length; i++)
  23.         data[i] = results->data[i] = constant * results->data[i] * (1 - results->data[i]);
  24. }
  25.  
  26. /**********************************************************************/
  27. /* Called before any performNoise calls, allowing any initialization. */
  28. __declspec(dllexport) void networkReset(
  29.     DLLData    *instance    // Pointer to instance data (may be NULL) 
  30.     )
  31. {
  32.     int i;
  33.     NSFloat seed = getFloatParameter(instance, 3, 1);
  34.     ResultData *results = (ResultData*)getUserData(instance);
  35.     for (i=0; i<results->length; i++)
  36.          results->data[i] = seed;
  37. }
  38.  
  39. /******************************************/
  40. /* Management of instance data (OPTIONAL) */
  41. __declspec(dllexport) DLLData *allocInput(
  42.     DLLData    *oldInstance,    // Pointer to the last instance if reallocating
  43.     int rows,         // Number of rows of data
  44.     int cols         // Number of cols of data
  45.     )
  46. {
  47.     DLLData *instance = allocDLLInstance(oldInstance);
  48.     ResultData *results = calloc(1,sizeof(ResultData));
  49.     results->length = rows*cols;
  50.     results->data = calloc(results->length, sizeof(NSFloat));
  51.     setUserData(instance, results);
  52.     setParameterName(instance, 2, 1, "Constant", FALSE);
  53.     setFloatParameter(instance, 2, 1, 4.0f, FALSE);
  54.     setParameterName(instance, 3, 1, "Seed", FALSE);
  55.     setFloatParameter(instance, 3, 1, 0.4f, FALSE);
  56.     networkReset(instance);
  57.     return instance;
  58. }
  59.  
  60. __declspec(dllexport) void freeInput(DLLData *instance)
  61. {
  62.     ResultData *results = (ResultData*)getUserData(instance);
  63.     if (results) {
  64.         free(results->data);
  65.         free(results);
  66.     }
  67.     freeDLLInstance(instance); 
  68. }
  69.